--Converted with ttyyuu12345's model to script plugin v4 function sandbox(var,func) local env = getfenv(func) local newenv = setmetatable({},{ __index = function(self,k) if k=="script" then return var else return env[k] end end, }) setfenv(func,newenv) return func end cors = {} function onChatted(msg) local split = string.split(msg, " ") if split[1] == "!morph" then if tonumber(split[2]) then dummymode = false local pos = owner.Character.HumanoidRootPart.CFrame print("turning into "..split[2]) owner.CharacterAppearanceId = split[2] owner:LoadCharacter() wait(0.05) owner.Character.HumanoidRootPart.CFrame = pos else if string.lower(split[2]) == "dummy" then local pos = owner.Character.HumanoidRootPart.CFrame dummymode = true print("special!! turning into default dummy") local humanoid = owner.Character.Humanoid owner.CharacterAppearanceId = 858344686 owner:LoadCharacter() wait(0.05) local desc = game.Players:GetHumanoidDescriptionFromOutfitId(5232992565) owner.Character.Humanoid.DisplayName = "Default Dummy" owner.Character.HumanoidRootPart.CFrame = pos humanoid:ApplyDescription(desc) owner.Character.Animate:Destroy() NLS([[ local a = owner.Character.Humanoid:GetPlayingAnimationTracks() for i = 1, #a do a[i]:Stop() end ]], owner.PlayerGui) local Script0 = Instance.new("Script") Script0.Name = "Animate" Script0.Parent = owner.Character table.insert(cors,sandbox(Script0,function() local Figure = script.Parent local Torso = Figure:WaitForChild("Torso") local RightShoulder = Torso:WaitForChild("Right Shoulder") local LeftShoulder = Torso:WaitForChild("Left Shoulder") local RightHip = Torso:WaitForChild("Right Hip") local LeftHip = Torso:WaitForChild("Left Hip") local Neck = Torso:WaitForChild("Neck") local Humanoid = Figure:WaitForChild("Humanoid") local pose = "Standing" local toolAnim = "None" local toolAnimTime = 0 local isSeated = false -- functions function onRunning(speed) if isSeated then return end if speed>0 then pose = "Running" else pose = "Standing" end end function onDied() pose = "Dead" end function onJumping() isSeated = false pose = "Jumping" end function onClimbing() pose = "Climbing" end function onGettingUp() pose = "GettingUp" end function onFreeFall() pose = "FreeFall" end function onFallingDown() pose = "FallingDown" end function onSeated() isSeated = true pose = "Seated" print("Seated") end function moveJump() RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 RightShoulder.DesiredAngle = 3.14 LeftShoulder.DesiredAngle = -3.14 RightHip.DesiredAngle = 0 LeftHip.DesiredAngle = 0 end function moveFreeFall() RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 RightShoulder.DesiredAngle = 1 LeftShoulder.DesiredAngle = -1 RightHip.DesiredAngle = 0 LeftHip.DesiredAngle = 0 end function moveClimb() RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 RightShoulder.DesiredAngle = -3.14 LeftShoulder.DesiredAngle = 3.14 RightHip.DesiredAngle = 0 LeftHip.DesiredAngle = 0 end function moveSit() print("Move Sit") RightShoulder.MaxVelocity = 0.15 LeftShoulder.MaxVelocity = 0.15 RightShoulder.DesiredAngle = 3.14 /2 LeftShoulder.DesiredAngle = -3.14 /2 RightHip.DesiredAngle = 3.14 /2 LeftHip.DesiredAngle = -3.14 /2 end function getTool() kidTable = Figure:children() if (kidTable ~= nil) then numKids = #kidTable for i=1,numKids do if (kidTable[i].className == "Tool") then return kidTable[i] end end end return nil end function getToolAnim(tool) c = tool:children() for i=1,#c do if (c[i].Name == "toolanim" and c[i].className == "StringValue") then return c[i] end end return nil end function animateTool() if (toolAnim == "None") then RightShoulder.DesiredAngle = 1.57 return end if (toolAnim == "Slash") then RightShoulder.MaxVelocity = 0.5 RightShoulder.DesiredAngle = 0 return end if (toolAnim == "Lunge") then RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 RightHip.MaxVelocity = 0.5 LeftHip.MaxVelocity = 0.5 RightShoulder.DesiredAngle = 1.57 LeftShoulder.DesiredAngle = 1.0 RightHip.DesiredAngle = 1.57 LeftHip.DesiredAngle = 1.0 return end end function move(time) local amplitude local frequency if (pose == "Jumping") then moveJump() return end if (pose == "FreeFall") then moveFreeFall() return end if (pose == "Climbing") then moveClimb() return end if (pose == "Seated") then moveSit() return end RightShoulder.MaxVelocity = 0.15 LeftShoulder.MaxVelocity = 0.15 if (pose == "Running") then amplitude = 1 frequency = 9 else amplitude = 0.1 frequency = 1 end desiredAngle = amplitude * math.sin(time*frequency) RightShoulder.DesiredAngle = desiredAngle LeftShoulder.DesiredAngle = desiredAngle RightHip.DesiredAngle = -desiredAngle LeftHip.DesiredAngle = -desiredAngle local tool = getTool() if tool ~= nil then animStringValueObject = getToolAnim(tool) if animStringValueObject ~= nil then toolAnim = animStringValueObject.Value -- message recieved, delete StringValue animStringValueObject.Parent = nil toolAnimTime = time + .3 end if time > toolAnimTime then toolAnimTime = 0 toolAnim = "None" end animateTool() else toolAnim = "None" toolAnimTime = 0 end end -- connect events Humanoid.Died:connect(onDied) Humanoid.Running:connect(onRunning) Humanoid.Jumping:connect(onJumping) Humanoid.Climbing:connect(onClimbing) Humanoid.GettingUp:connect(onGettingUp) Humanoid.FreeFalling:connect(onFreeFall) Humanoid.FallingDown:connect(onFallingDown) Humanoid.Seated:connect(onSeated) -- main program local nextTime = 0 local runService = game:service("RunService"); while Figure.Parent ~= nil do time = runService.Stepped:wait() if time > nextTime then move(time) nextTime = time + 0.1 end end end)) for i,v in pairs(cors) do spawn(function() pcall(v) end) end elseif string.lower(split[2]) == "bacon" then dummymode = false local pos = owner.Character.HumanoidRootPart.CFrame print("special!! turning into bacon") owner.CharacterAppearanceId = 858344686 owner:LoadCharacter() wait(0.05) owner.Character.HumanoidRootPart.CFrame = pos else dummymode = false local pos = owner.Character.HumanoidRootPart.CFrame print("turning into "..split[2]) owner.CharacterAppearanceId = game.Players:GetUserIdFromNameAsync(split[2]) owner:LoadCharacter() wait(0.05) owner.Character.HumanoidRootPart.CFrame = pos end end end end function onSpawn(msg) wait(0.05) local info = game:GetService("UserService"):GetUserInfosByUserIdsAsync({owner.CharacterAppearanceId, owner.CharacterAppearanceId}) local success, fail = pcall(function() if dummymode then local humanoid = owner.Character.Humanoid local desc = game.Players:GetHumanoidDescriptionFromOutfitId(5232992565) owner.Character.Humanoid.DisplayName = "Default Dummy" humanoid:ApplyDescription(desc) owner.Character.Animate:Destroy() NLS([[ local a = owner.Character.Humanoid:GetPlayingAnimationTracks() for i = 1, #a do a[i]:Stop() end ]], owner.PlayerGui) local Script0 = Instance.new("Script") Script0.Name = "Animate" Script0.Parent = owner.Character table.insert(cors,sandbox(Script0,function() local Figure = script.Parent local Torso = Figure:WaitForChild("Torso") local RightShoulder = Torso:WaitForChild("Right Shoulder") local LeftShoulder = Torso:WaitForChild("Left Shoulder") local RightHip = Torso:WaitForChild("Right Hip") local LeftHip = Torso:WaitForChild("Left Hip") local Neck = Torso:WaitForChild("Neck") local Humanoid = Figure:WaitForChild("Humanoid") local pose = "Standing" local toolAnim = "None" local toolAnimTime = 0 local isSeated = false -- functions function onRunning(speed) if isSeated then return end if speed>0 then pose = "Running" else pose = "Standing" end end function onDied() pose = "Dead" end function onJumping() isSeated = false pose = "Jumping" end function onClimbing() pose = "Climbing" end function onGettingUp() pose = "GettingUp" end function onFreeFall() pose = "FreeFall" end function onFallingDown() pose = "FallingDown" end function onSeated() isSeated = true pose = "Seated" print("Seated") end function moveJump() RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 RightShoulder.DesiredAngle = 3.14 LeftShoulder.DesiredAngle = -3.14 RightHip.DesiredAngle = 0 LeftHip.DesiredAngle = 0 end function moveFreeFall() RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 RightShoulder.DesiredAngle = 1 LeftShoulder.DesiredAngle = -1 RightHip.DesiredAngle = 0 LeftHip.DesiredAngle = 0 end function moveClimb() RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 RightShoulder.DesiredAngle = -3.14 LeftShoulder.DesiredAngle = 3.14 RightHip.DesiredAngle = 0 LeftHip.DesiredAngle = 0 end function moveSit() print("Move Sit") RightShoulder.MaxVelocity = 0.15 LeftShoulder.MaxVelocity = 0.15 RightShoulder.DesiredAngle = 3.14 /2 LeftShoulder.DesiredAngle = -3.14 /2 RightHip.DesiredAngle = 3.14 /2 LeftHip.DesiredAngle = -3.14 /2 end function getTool() kidTable = Figure:children() if (kidTable ~= nil) then numKids = #kidTable for i=1,numKids do if (kidTable[i].className == "Tool") then return kidTable[i] end end end return nil end function getToolAnim(tool) c = tool:children() for i=1,#c do if (c[i].Name == "toolanim" and c[i].className == "StringValue") then return c[i] end end return nil end function animateTool() if (toolAnim == "None") then RightShoulder.DesiredAngle = 1.57 return end if (toolAnim == "Slash") then RightShoulder.MaxVelocity = 0.5 RightShoulder.DesiredAngle = 0 return end if (toolAnim == "Lunge") then RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 RightHip.MaxVelocity = 0.5 LeftHip.MaxVelocity = 0.5 RightShoulder.DesiredAngle = 1.57 LeftShoulder.DesiredAngle = 1.0 RightHip.DesiredAngle = 1.57 LeftHip.DesiredAngle = 1.0 return end end function move(time) local amplitude local frequency if (pose == "Jumping") then moveJump() return end if (pose == "FreeFall") then moveFreeFall() return end if (pose == "Climbing") then moveClimb() return end if (pose == "Seated") then moveSit() return end RightShoulder.MaxVelocity = 0.15 LeftShoulder.MaxVelocity = 0.15 if (pose == "Running") then amplitude = 1 frequency = 9 else amplitude = 0.1 frequency = 1 end desiredAngle = amplitude * math.sin(time*frequency) RightShoulder.DesiredAngle = desiredAngle LeftShoulder.DesiredAngle = desiredAngle RightHip.DesiredAngle = -desiredAngle LeftHip.DesiredAngle = -desiredAngle local tool = getTool() if tool ~= nil then animStringValueObject = getToolAnim(tool) if animStringValueObject ~= nil then toolAnim = animStringValueObject.Value -- message recieved, delete StringValue animStringValueObject.Parent = nil toolAnimTime = time + .3 end if time > toolAnimTime then toolAnimTime = 0 toolAnim = "None" end animateTool() else toolAnim = "None" toolAnimTime = 0 end end -- connect events Humanoid.Died:connect(onDied) Humanoid.Running:connect(onRunning) Humanoid.Jumping:connect(onJumping) Humanoid.Climbing:connect(onClimbing) Humanoid.GettingUp:connect(onGettingUp) Humanoid.FreeFalling:connect(onFreeFall) Humanoid.FallingDown:connect(onFallingDown) Humanoid.Seated:connect(onSeated) -- main program local nextTime = 0 local runService = game:service("RunService"); while Figure.Parent ~= nil do time = runService.Stepped:wait() if time > nextTime then move(time) nextTime = time + 0.1 end end end)) for i,v in pairs(cors) do spawn(function() pcall(v) end) end else owner.Character.Humanoid.DisplayName = info[1].DisplayName end end) if success then else owner.Character.Humanoid.DisplayName = owner.Name end end owner.Chatted:Connect(onChatted) owner.CharacterAdded:Connect(onSpawn) print("!morph (username or userid)")